using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ContentOverContainer.Common;
using Roslyn.Compilers.CSharp;
using Roslyn.Compilers.Common;
using Roslyn.Services;

namespace ContentOverContainer
{
    /// <summary>
    /// Base class for multiplicity walker.
    /// </summary>
    /// <author>Harald Binkle</author>
    public abstract class BaseWalker : SyntaxWalker
    {
        protected readonly ReferencesList m_References;
        protected readonly ChangeNodeInfoList m_Replacements;
        protected IDocument m_Document;
        protected ISemanticModel m_SemModel;

        protected ISolution m_Solution;

        public IDocument Document
        {
            get { return m_Document; }
            set
            {
                m_Document = value;
                    m_SemModel = m_Document.GetSemanticModel();
            }
        }

        protected BaseWalker(ISolution pSolution, ReferencesList pReferences, ChangeNodeInfoList pChangeNodePairs)
        {
            m_Solution = pSolution;
            m_Replacements = pChangeNodePairs;
            m_References = pReferences;
        }

    }
}
